// [DFS递归]走棋盘格，只能向左向上，最多几种
#include <iostream>
using namespace std;
int cnt;
int m, n;
void dfs(int row, int col) {
  if (row == m && col == n){
    cnt++;
    return;
  }
  //不超边界，m*n划线来看有（m+1）*(n+1)
  if (row < m + 1 && col < n + 1) {
    dfs(row + 1, col);
    dfs(row, col + 1);
  }
}
int main() {
  while (cin >> m >> n) {
    dfs(0, 0);
    cout << cnt << endl;
    cnt = 0;
  }
}